
#include"../src/server.hpp"
//业务处理超时，查看服务器的处理情况
//即当服务器达到了一个性能评价，在一次的业务处理中花费了太长的时间（超过了服务器设置的非活跃超时时间
// 1.在一次业务处理中耗费了太长时间，导致其他连接也被连累超时其他的连接有可能被超时释放
// 假设现在有1 2 3 4 5 描述符就绪了，在处理1的时候超时了(例如花了30s)，那么2,3,4,5因为长时间没有刷新活跃度从而导致超时释放
//      如果接下来的2345描述符都是通信连接描述符，如果都就绪了！那么就不影响，因为如果都就绪了接下来就会进行处理并刷新活跃度！
//      但是如果接下来的2号描述符是一个定时器的事件描述符，定时器触发超时，执行定时任务就会将3,4,5描述符给释放掉了！
//      那么接下来在处理3,4,5事件的时候就会导致程序崩溃（内存访问错误！）
//      因此这时候在本次事件处理中！并不能直接对连接进行释放！应该将释放操作压入任务池中！
//      等到事件处理完了执行任务池中的任务的时候再去释放！


int main()
{
    for(int i = 0;i<10;i++)
    {
        pid_t pid = fork();
        if(pid < 0)
        {
            DBG_LOG("fork error");
            return -1;
        }
        else if(pid == 0)
        {
            Socket cli_sock;
            cli_sock.CreateClient(8888, "127.0.0.1");
            std::string req = "GET /hello HTTP/1.1\r\nConnection: keep-alive\r\nContent-Length: 0\r\n\r\n";
            while (1)
            {
                int ret = cli_sock.Send(req.c_str(), req.size());
                assert(ret != -1);
                char buf[1024] = {0};
                assert(cli_sock.Recv(buf, 1023));
                DBG_LOG("[%s]", buf);
            }
            cli_sock.Close();
            exit(0);
        }

    }
    while(1)
    {
        sleep(1);
    }
    return 0;
}
